home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Gekikoh Dennoh Club 2
/
Gekikoh Dennoh Club Vol. 2 (Japan).7z
/
Gekikoh Dennoh Club Vol. 2 (Japan) (Track 01).bin
/
fsw
/
zm302
/
zm302_m.lzh
/
ZM12.MAN
< prev
next >
Wrap
Text File
|
1997-03-26
|
67KB
|
1,815 lines
MEASURE12
ZMD/ZPDフォーマット
ここではZMD,ZPD、その他のZMUSIC Ver.3.0で扱う
ファイルのフォーマットについて解説します。
[注意]
文中の(.b)(.w)(.l)および(ds.b)(ds.w)(ds.l)等はデータ長を表している。
(ds.b)/(.b) バイトサイズ
(ds.w)/(.w) ワードサイズ(2バイト)
(ds.l)/(.l) ロングワードサイズ(4バイト)
12.1. ZMDファイルのヘッダブロックの構成
ZMDは
$1a,'ZmuSiC',ZMD version ID($30)
のヘッダIDを先頭に以下のようなヘッダ構成を取る。
各ヘッダ項目は各情報/データ領域までのオフセットを格納するもの(z_comn_offset,
z_trk_offsetなど)と項目データそのものを格納するもの(z_total_count,z_tempoなど)
の2タイプに分けられる。
演奏データなどを一切含んでいない「空」のZMDであっても以下に示したヘッダブロ
ックは必ず存在する。
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
z_zmusic_id: ds.l 2 *$1a,'ZmuSiC',ZMD version ID($30)
z_comn_offset: ds.l 1 *共通コマンドまでのオフセット(0:無し)
z_trk_offset: ds.l 1 *トラック・チャンネル情報テーブルまでの
*オフセット(0:無し)
z_ctrl_offset: ds.l 1 *演奏制御コマンドまでのオフセット
*(0で全トラック演奏)
z_zmd_size: ds.l 1 *このZMDファイル全体のサイズ
z_song_offset: ds.l 1 *歌詞データまでのオフセット
ds.l 1 *リザーブ
z_total_offset: ds.l 1 *トータルステップタイムの格納アドレス
z_title_offset: ds.l 1 *タイトル文字列までのオフセット
*(または最初のコメント文)
z_total_count: ds.l 1 *Total Step Time
z_play_time: ds.l 1 *演奏時間(時間/分/秒) [reserved]
z_meter: ds.w 1 *拍子(n/m)
z_metronome: ds.b 1 *メトロノーム速度
ds.b 1 *reserved
z_key: ds.w 1 *調号(n個の#/-n個の♭/0はC),(0で長調/1で短調)
z_master_clock: ds.w 1 *全音符のマスタークロック[192]
z_tempo: ds.w 1 *初期テンポ[120]
ds.w 1 *reserved
z_cmn_flag: ds.l 1 *共通コマンドの使用状態
z_ctrl_flag: ds.l 1 *制御コマンドの使用状態
z_instrument: ds.l 1 *使用楽器タイプ
*(d0:GM d1:GS d2:SC88 d3:MT32 d4:U220 d5:M1)
z_nof_fm_ch: ds.b 1 *FM音源使用チャンネル数(0-8)
z_nof_ad_ch: ds.b 1 *ADPCM(PCM)音源使用チャンネル数(0-16)
z_nof_md1_ch: ds.b 1 *MIDI-1使用チャンネル数(0-16)
z_nof_md2_ch: ds.b 1 *MIDI-2使用チャンネル数(0-16)
z_nof_md3_ch: ds.b 1 *MIDI-3使用チャンネル数(0-16)
z_nof_md4_ch: ds.b 1 *リザーブ
ds.w 1 *リザーブ
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
なお、タイトル文字は
1行目は曲のタイトル。それ以降はコメント。
また、曲名/作曲者/編曲者/データ作成者の様な一般的な情報を複数行にわたって
記述する場合は以下の文字列で表される情報タイトルの後に記載することと規定する。
(情報タイトルの日本語は全角、英字は半角英数大文字のみ、また : は必須)
[日本語] [英語]
曲名: TITLE:
作曲者: COMPOSER:
編曲者: ARRANGER:
作成者: MANIPULATER:
作成日: DATE: (原曲の作曲年月日はCOPYRIGHT:)
録音場所 STUDIO:
使用機器: INSTRUMENTS:
ジャンル: CATEGORY:
例
.comment {
TITLE: I am a boy, therefore I have balls.
作曲者:西川善司
STUDIO:自宅
ジャンル:童謡
}
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ オフセット値について ┃
┃ ┃
┃ ┃
┃ ZMUSIC用のデータで扱うオフセット値はオフセット値の格納してある次の ┃
┃ ┃
┃アドレスからのオフセットです。今例えば、$A000番地に ┃
┃ ┃
┃ワードサイズのオフセット$0E00が格納されていたとするとポイントするアドレスは ┃
┃ ┃
┃$A002+$0E00=$AE02となります。 ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
12.2. 共通コマンドのZMD
ZMDに共通コマンドが存在しない場合はヘッダブロックの z_comn_offset の内容を
0とする。存在する場合は一番初めの共通コマンドZMDの存在位置までのオフセット
アドレスを格納する。
共通コマンドZMDには以下のようなものがある。
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●CMN_END 共通コマンドZMD終了
$ff(.b)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●CMN_INIT 初期化
$00(.b) ZMD
$00(.b) 将来の拡張用
合計2bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●CMN_READ_SUB サブファイルの読み込みと実行
$04(.b) ZMD
Filename ファイル名文字列(Endcode=0(.b))
合計?bytes
または
$04(.b) ZMD
0(.b) 文字列でなくオフセット値指定で有ることを示すコード
Offset(.l) データが存在するアドレスまでのオフセット
Size(.l)
合計10bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●CMN_TEMPO テンポ
$08(.b) ZMD
Tempo(.w) テンポ値:0-65535
合計3bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●CMN_MASTER_CLOCK 全音符クロック数登録
$0c(.b) ZMD
Master Clock(.w) マスタークロック:0-32767
合計3bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●CMN_FM_TUNE_SETUP FM音源チューニング
$10(.b) ZMD
Data...(128bytes) チューニング値(MML @Kレンジ):-128~+127
合計129bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●CMN_PCM_TUNE_SETUP (AD)PCM音源チューニング
$14(.b) ZMD
Data...(128bytes) チューニング値(MML @Kレンジ):-128~+127
合計129bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●CMN_VSET: FM音源音色設定
$18(.b) ZMD
Tone number(.w) 0-256*128
0(.b) RESERVED
Tone data(.b) 0)LFRQ
Tone data(.b) 1)PMD
Tone data(.b) 2)AMD
Tone data(.b) 3)SYNC/OM/WF
Tone data(.b) 4)PAN/AF
Tone data(.b) 5)PMS/AMS
Tone data(.b) 6)OP1:DT1/MUL
Tone data(.b) 7)OP3:DT1/MUL
Tone data(.b) 8)OP2:DT1/MUL
Tone data(.b) 9)OP4:DT1/MUL
Tone data(.b) 10)OP1:TL
Tone data(.b) 11)OP3:TL
Tone data(.b) 12)OP2:TL
Tone data(.b) 13)OP4:TL
Tone data(.b) 14)OP1:KS/AR
Tone data(.b) 15)OP3:KS/AR
Tone data(.b) 16)OP2:KS/AR
Tone data(.b) 17)OP4:KS/AR
Tone data(.b) 18)OP1:AME/1DR
Tone data(.b) 19)OP3:AME/1DR
Tone data(.b) 20)OP2:AME/1DR
Tone data(.b) 21)OP4:AME/1DR
Tone data(.b) 22)OP1:DT2/2DR
Tone data(.b) 23)OP3:DT2/2DR
Tone data(.b) 24)OP2:DT2/2DR
Tone data(.b) 25)OP4:DT2/2DR
Tone data(.b) 26)OP1:D1L/RR
Tone data(.b) 27)OP3:D1L/RR
Tone data(.b) 28)OP2:D1L/RR
Tone data(.b) 29)OP4:D1L/RR
Tone data(.b) 30)-45)NAME
合計50bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●CMN_WAVE_FORM 波形メモリ登録
$1c(.b) ZMD
Wave number(.w) 波形番号:8-255
Data Size(.l) データサイズ:2~ (かならず偶数)
Loop Type(.b) 波形タイプ:(0:1Shot 1:Loop 2:Alternative-Loop)
Loop Start Offset(.l) ループ開始オフセット:0~(かならず偶数)
(ループなしの場合は0)
Loop End Offset(.l) ループ終端オフセット:0~(かならず偶数)
(オフセット値はループ終端データのあるオフセットアドレス+2)
(ループなしの場合は最終データの存在するオフセットアドレス+2)
Loop Time(.l) ループ回数:(1~) (0は無限回に相当)
Reserved(.l) リザーブ
String Length(.b) コメント文字列長:0-255
String Data... コメント文字列 (No Endcode)
(.even処理)
Wave Data(.w) 波形データ (必ず偶数アドレスから...)
合計25~?bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●CMN_REGISTER_PCM (AD)PCM登録
$20(.b) ZMD
Flag(.w) フラグ
d15:PCMデータ加工オプションパラメータの有無
(0:no 1:exist)
d0-d14:1-32767 次の共通コマンドまでのオフセット
d0-d14:0は15ビットでは表現出来ない場合を表すが通常は
無視してよい
Note/Timbre No.(.w) Note Number(0-32767)/Timbre Number($8000+0-32767)
Regtype(.b) 登録タイプ(-1:ADPCM 0:V2互換 1:16bitPCM 2:8bitPCM)
Original Key Code(.b) オリジナルキー(0-127:Key Code 128:No Original Key)
Reserved(.w) リザーブ
Tone Name(.b)...0(.b) TONE NAME(最大32バイト) (Endcode=0(.b))
Filename(.b)...0(.b) ファイルネーム文字列 (Endcode=0(.b))
(Filename).l=$00xxxxxxの場合はすでに登録されている
トーン/音色データをコピー流用する指定となる。
(Filename).l=$01xxxxxxの場合はすでに登録されている
トーン/音色データを流用する。 (この場合、.LOOP以外の
PPCは利用不可)
PPC(?butes) PCM PROCESSING COMMAND(PPC)... PPCについては後述
合計21-?bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●CMN_ERASE_PCM (AD)PCM登録取消
$24(.b) ZMD
Note/Timbre No.(.w) Note Number(0-32767)/Timbre Number($8000+0-32767)
合計3bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●CMN_BLOCK_PCM ZPD読み込み
$28(.b) ZMD
Filename(.b)...0(.b) ファイルネーム文字列(Endcode=0(.b))
合計3~?bytes
または
$28(.b) ZMD
ZPD.ID(.b) ZPD ID(0:V1~2 1:V3 2:PDX)
Offset(.l) データが存在するアドレスまでのオフセット
合計6bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●CMN_CRNT_MIDI_IN カレントMIDI-IN設定
$2c(.b) ZMD
MIDI I/F Number(.b) インターフェース番号:0-3
合計2bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●CMN_CRNT_MIDI_OUT カレントMIDI-OUT設定
$30(.b) ZMD
MIDI I/F Number(.b) インターフェース番号:0-3
合計2bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●CMN_MIDI_TRANSMISSION MIDIデータ転送
$34(.b) ZMD
MIDI I/F(.b) インターフェース番号:0-3/(-1:カレントMIDI-OUT)
String Length(.b) 文字列長:0-255
String Data... コメント文字列 (No Endcode)
Transmit Data Length(.l) 転送データ長
Data.... 転送データ
合計8-?bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●CMN_MIDI_DUMP スタンダードMIDIファイルの送信
$38(.b) ZMD
MIDI I/F(.b) インターフェース番号:0-3/(-1:カレントMIDI-OUT)
Filename(.b)...0(.b) ファイルネーム文字列 (Endcode=0(.b))
合計4-?bytes
または
$38(.b) ZMD
MIDI I/F(.b) インターフェース番号:0-3/(-1:カレントMIDI-OUT)
0(.b) 文字列でなくオフセット値指定で有ることを示すコード
Offset(.l) データが存在するアドレスまでのオフセット
合計7bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●CMN_COMMENT コメント
$40(.b) ZMD
String(.b)...0(.b) 文字列 (Endcode=0(.b))
合計3-?bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●CMN_PRINT 文字列表示
$44(.b) ZMD
String(.b)...0(.b) 文字列 (Endcode=0(.b))
合計3-?bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●CMN_DUMMY ダミー
$48(.b) ZMD
合計1byte
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●CMN_HALT 停止
$4c(.b) ZMD
Interval(.l) 待ち時間=1/60秒×Interval(.l)
合計5bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
12.3. PCM PROCESSING COMMANDのZMD
共通コマンドZMD「CMN_REGISTER_PCM」はPCMの加工をPCM PROCESSING COMMAND(PPC)
を用いてVer.2.0以前の(AD)PCM加工処理よりも柔軟な加工が行えるようになっている。
以下に示すのはPPCのZMDで、共通コマンドZMD「CMN_REGISTER_PCM」中に用いて初めて
機能し、これ単体で用いられることはない(用いることは出来ない)。
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●PPC_END PPC終了
$00(.w) PPC END
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●PPC_PITCH 音程変更
$02(.w) PPC
Offset Count(.l) 加工開始オフセット:値は物理サイズではなくて
データカウント
Processing Count(.l) 加工サイズ:値は物理サイズではなくてデータカウント
0は加工開始オフセット以降全てを加工範囲とする
Source Frq(.w) 変換元周波数:1-65535
Dest. Frq(.w) 変換後周波数:1-65535
合計13bytes
※データカウントは登録タイプによってその次元は変化する
・登録タイプがADPCMのときデータ1カウントは物理量1バイトに相当する
・登録タイプが16bitPCMの時にはデータ1カウントは物理量2バイトに相当する
その他のPPCについても同様
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●PPC_VOLUME 音量変更
$04(.w) PPC
Offset Count(.l) 加工開始オフセット:値は物理サイズではなくて
データカウント
Processing Count(.l) 加工サイズ:値は物理サイズではなくてデータカウント
0は加工開始オフセット以降全てを加工範囲とする
Volume(.w) 音量:0-65535
合計11bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●PPC_MIX 合成
$06(.w) PPC
$0000(.w) 固定値
Mix Source(.w) 合成元:(Tone:0-32767 Timbre:$8000+(0-32767))
Offset Count(.l) 合成開始オフセット:値は物理サイズではなくて
データカウント(負の値も可能)
負の場合は絶対値カウント分、合成先
データの前側に合成する指定となる。
PPC... PPCをさらにここに含め合成元のデータに対して加工処理を
施すことが出来る。
PPC_ENDで合成元のデータに対するPPC列の終端を表す。
0(.b) PPC_MIX終了
合計10-?bytes
または
$06(.w) PPC
Filename...0(.b) ファイルネーム文字列 (0=Endcode(.b))
Offset Count(.l) 合成開始オフセット:値は物理サイズではなくて
データカウント(負の値も可能)
負の場合は絶対値カウント分、合成先
データの前側に合成する指定となる。
PPC... PPCをさらにここに含め合成元のデータに対して加工処理を
施すことが出来る。
PPC_ENDで合成元のデータに対するPPC列の終端を表す。
0(.b) PPC_MIX終了
合計8-?bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●PPC_TRUNCATE 切りだし
$08(.w) PPC
Offset Count(.l) 切りだし開始オフセット:値は物理サイズではなくて
データカウント
Truncate Count(.l) 切りだしサイズ:値は物理サイズではなくてデータカウント
0はオフセット以降全てを加工範囲とする
合計9bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●PPC_REVERSE 反転
$0a(.w) PPC
Offset Count(.l) 反転開始オフセット:値は物理サイズではなくて
データカウント
Reverse Count(.l) 反転サイズ:値は物理サイズではなくてデータカウント
0はオフセット以降全てを加工範囲とする
合計9bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●PPC_FADE フェーダー操作
$0c(.w) PPC
Offset Count(.l) 加工開始オフセット:値は物理サイズではなくて
データカウント
Fade Count(.l) 加工サイズ:値は物理サイズではなくてデータカウント
0はオフセット以降全てを加工範囲とする
Start Level(.w) 開始音量:0-128-65535(128は原音レベル)
End Level(.w) 終了音量:0-128-65535(128は原音レベル)
合計13bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●PPC_BEND ピッチベンド
$0e(.w) PPC
Offset Count(.l) 加工開始オフセット:値は物理サイズではなくて
データカウント
Bend Count(.l) 加工サイズ:値は物理サイズではなくてデータカウント
0はオフセット以降全てを加工範囲とする
Start Frq(.w) 開始周波数:1-65535[Hz]
End Frq(.w) 終了周波数:1-65535[Hz]
合計13bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●PPC_LOOP ループポイント設定
$10(.w) PPC
omt(.b) 省略フラグ(bit=1で対応パラメータが後続する)
d0:loop start point
d1:loop end point
Loop Type(.b) ループタイプ:0=FORWARD (現在は0のみ)
Loop Time(.l) ループ回数:1~ (0は無限回に相当)
Loop Start(.l) ループ開始オフセット:値は物理位置ではなくてデータカウント
(omt.d0=1の時だけ設定)
Loop End(.l) ループ終了オフセット:値は物理位置ではなくてデータカウント
(omt.d1=1の時だけ設定)
合計6-14bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●PPC_CONNECT 接合
$12(.w) PPC
$0000(.w) 固定値
Connect Source(.w) 接合元:(Tone:0-32767 Timbre:$8000+(0-32767))
Offset Count(.l) 接合開始オフセット:値は物理サイズではなくて
データカウント(負の値も可能)
負の場合は絶対値カウント分、接合先
データの前側に接合する指定となる。
PPC... PPCをさらにここに含め接合元のデータに対して加工処理を
施すことが出来る。
PPC_ENDで接合元のデータに対するPPC列の終端を表す。
0(.b) PPC_CONNECT終了
合計11-?bytes
または
$12(.w) PPC
filename...0(.b) ファイルネーム文字列 (Endcode=0(.b))
Offset Count(.l) 接合開始オフセット:値は物理サイズではなくて
データカウント(負の値も可能)
負の場合は絶対値カウント分、接合先
データの前側に接合する指定となる。
PPC... PPCをさらにここに含め接合元のデータに対して加工処理を
施すことが出来る。
PPC_ENDで接合元のデータに対するPPC列の終端を表す。
0(.b) PPC_CONNECT終了
合計9-?bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●PPC_DELETE 削除
$14(.w) PPC
Offset Count(.l) 削除開始オフセット:値は物理サイズではなくて
データカウント
Truncate Count(.l) 削除サイズ:値は物理サイズではなくてデータカウント
0はオフセット以降全てを削除範囲とする
合計9bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●PPC_DISTORTION ディストーション
$16(.w) PPC
Offset Count(.l) 加工開始オフセット:値は物理サイズではなくて
データカウント
Processing Count(.l) 加工サイズ:値は物理サイズではなくてデータカウント
0はオフセット以降全てを加工範囲とする
Volume(.w) 音量倍率:0-65535
Cut Off Level(.w) 音量臨海値:0-32767(絶対値をこれ以下のレベルに丸める)
合計13bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●PPC_SMOOTH 平均化(スムーズ化)
$18(.w) PPC
Offset Count(.l) 加工開始オフセット:値は物理サイズではなくて
データカウント
Reverse Count(.l) 加工サイズ:値は物理サイズではなくてデータカウント
0はオフセット以降全てを加工範囲とする
Repeat(.w) 処理繰り返し回数:0~65535(0は1回,65535は65536回)
合計11bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
12.4. 制御コマンドのZMD
ZMDに制御コマンドが存在しない場合はヘッダブロックの z_ctrl_offset の内容を
0とする。存在する場合は一番初めの制御コマンドZMDの存在位置までのオフセット
アドレスを格納する。
制御コマンドZMDには以下のようなものがある。
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●CTRL_END 制御コマンド終了
$ff(.b) ZMD
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●CTRL_PLAY 演奏開始
$00(.w) ZMD
Track Number(.w) トラック番号:0-65534
Track Number(.w) トラック番号:0-65534
:
:
Track Number(.w) トラック番号:0-65534
-1(.w) CTRL_PLAY終了
合計4-?bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●CTRL_STOP 演奏停止
$04(.w) ZMD
Track Number(.w) トラック番号:0-65534
Track Number(.w) トラック番号:0-65534
:
:
Track Number(.w) トラック番号:0-65534
-1(.w) CTRL_STOP終了
4-?bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●CTRL_CONT 演奏再開
$08(.w) ZMD
Track Number(.w) トラック番号:0-65534
Track Number(.w) トラック番号:0-65534
:
:
Track Number(.w) トラック番号:0-65534
-1(.w) CTRL_STOP終了
合計4-?bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●CTRL_MFADER マスターフェーダー
$0c(.w) ZMD
Device-ID(.w) 音源ID:(FM=0,(AD)PCM=1,MIDI1=$8000,MIDI2=$8001,
MIDI3=$8002,MIDI4=$8003,
-1=全音源が操作対象となる)
omt(.b) 省略フラグ(bit=1で対応パラメータが後続する)
d0:speed
d1:Start Level
d2:End Level
Speed(.w) 移動速度:0-65535
Start Level(.b) 開始レベル:0-128
End Level(.b) 終了レベル:0-128
合計5-8bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●CTRL_TFADER トラックフェーダー
$10(.w) ZMD
Track Number(.w) トラック番号:0-65534,-1=全トラックが操作対象となる
omt(.b) 省略フラグ(bit=1で対応パラメータが後続する)
d0:Speed
d1:Start Level
d2:End Level
Speed(.w) 移動速度:0-65535(0=移動しない)
Start Level(.b) 開始レベル:0-128
End Level(.b) 終了レベル:0-128
合計5-8bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●CTRL_MASK マスク制御
$14(.w) ZMD
{
Track Number(.w) トラック番号:0-65534
Mask Mode(.w) マスクモード:0=MASK OFF, 1=REVERSE, -1=MASK ON
}×n
-1(.w) CTRL_MASK終了
合計8-?bytes
全トラックを操作対象とする場合は
$14(.w) ZMD
-1(.w) 全トラックを操作対象とするコード
Mask Mode(.w) マスクモード:0=MASK OFF, 1=REVERSE, -1=MASK ON
合計6bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
12.5. トラック・チャンネル情報テーブルの構成
ZMDに演奏データが存在しない場合はヘッダブロックの z_trk_offset の内容を
0とする。存在する場合はトラック・チャンネル情報テーブルの存在位置までの
オフセットアドレスを格納する。
トラック・チャンネル情報テーブルとは、演奏データまでのオフセットアドレス、
そのトラックに割り当てられた初期音源種別等の情報を格納した領域のこと。
以下にそのトラック・チャンネル情報テーブルの構成を示す。
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ti_n_of_tracks: ds.w 1 *.w トラック数-1(0-65535)
ti_track_stat: ds.b 1 *.b $00=performance,$80=非演奏trackマーク(詳しくはZMID.MAC参照)
ti_track_mode: ds.b 1 *.b $80=no key off(詳しくはZMID.MAC参照)
ti_trkfrq: ds.b 1 *.b 割り込み比率(0:normal,1:2回に1回,2:3回に一回,...)
ds.b 1 *.b
ti_type: ds.w 1 *.w デバイスタイプ(FM:0 ADPCM:1 MIDI:$8000~$8003
* PATTERN:$7fff CURRENT-MIDI:$ffff)
ti_ch: ds.w 1 *.w チャンネル(0-15)
ti_play_data: ds.l 1 *.l 演奏データまでのoffset
ti_extra_info: ds.l 1 *.l トラック追加情報までのオフセット(0の場合はない)
以降、ti_track_stat~ti_extra_infoまでが総トラック数分続く
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
12.6. トラック追加情報
トラック追加情報とは演奏トラック1つ1つに対して付加される情報で、トラック・
チャンネル情報テーブル中の ti_extra_info から参照されるもの。トラック追加情報が
ない場合は ti_extra_info には0を格納する。
以下にトラック追加情報の構成を示す。
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
tx_total_step: ds.l 1 *.l トラック総ステップタイム
tx_checksum: ds.l 1 *.l トラックチェックサム
tx_n_of_measure: ds.l 1 *.l 総小節数
tx_comment_length: ds.l 1 *.l トラックコメント文字列長(0:none)
以降、tx_comment_lengthで表される長さの文字列が続く。ただしEndcode=0(.b)など
は無い。
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
12.7. 演奏トラックのZMD
演奏トラックには以下に示すZMDが格納される。演奏トラックはトラック・チャンネル
情報テーブルの ti_play_data にその位置までのオフセットアドレスが格納される。
[注意]
・(.v)で表されるデータサイズは1バイト~2バイトの任意のサイズを取ることを
意味する。
・[]で表される数値はデフォルトであることを意味する。
・「→XXXX」などは、そのパラメータがMEASURE13で解説されるZMUSIC Ver.3.0の
演奏トラックワークに格納されることを意味している。
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
■$00~$7f
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●音符(MML C,D,E,F,A,G)
Note Number(.b) ノート番号:0-127(.b) →k_note
Step Time(.v) ステップタイム:0-127(.b), 32768+(0-32767)(.w) →p_step_time
Gate Time(.v) ゲートタイム:$8000(.w)=tie,
0-127(.b) | 32768+(128-32767)(.w) →k_gate_time
Velocity(.b) ベロシティ:0-127, 128=use default, →p_velo
129~191,192,193~255は-63~-1,0,1~63に対応する
合計4-6bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
■$80~$8f
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●休符(MML R)
$80(.b) ZMD
Step Time(.v) ステップタイム:0-127(.b) | 32768+(0-32767)(.w) →p_step_time
Gate Time(.v) ゲートタイム:$8000(.w)=tie
0-127(.b) | 32768+(128-32767)(.w) →k_gate_time
合計3-5bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●ウェイト(MML @W)
$81(.b) ZMD
Step Time(.v) ステップタイム:0-127(.b) | 32768+(0-32767)(.w) →p_step_time
合計2-3bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●トラックディレイ(MML [TRACK_DELAY])
$82(.b) ZMD
Step Time(.v) 0-127(.b), 32768+(0-32767)(.w) →p_step_time
合計2-3bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●MXDRV系音符
$83(.b) ZMD
Note Number(.b) ノート番号:0-127(+$80だとtie指定となる) →k_note
Step Time(.v) ステップタイム:0-127(.b) | 32768+(0-32767)(.w) →p_step_time
合計3-6bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●ポルタメント1(MML (~))
$84(.b) ZMD
Note Number(.b) ノート番号:0-127 →k_note
$80+(0-127)の場合はディレイ有り
Dest.Note(.b) ポルタメント先のノート番号:0-127
$80+(0-127)の場合はポルタメント
タイム有り
Delay(.v) ディレイ:0-127(.b) | 32768+(0-32767)(.w) →p_port_dly
(ただしNote Number(.b)≧$80のときのみ)
Port.Time(.v) ポルタメントタイム:0-127(.b) →p_port_cnt
32768+(0-32767)(.w)
(ただしDest.Note≧$80のときのみ)
Step Time(.v) ステップタイム:1-127(.b) | 32768+(1-32767)(.w) →p_step_time
Gate Time(.v) ゲートタイム:$8000(.w)=tie →k_gate_time
0-127(.b) | 32768+(128-32767)(.w)
Velocity(.b) ベロシティ:0-127 | 128=use default, →p_velo
129~191,192,193~255は-63~-1,0,1~+63に対応する
合計6-11bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●ポルタメント2(MML([~]))
$85(.b) ZMD
Note Number(.b) ノート番号:0-127 →k_note
$80+(0-127)の場合はディレイ有り
Dest.Note(.b) ポルタメント先のノート番号:0-127
$80+(0-127)の場合はポルタメント
タイム有り
Delay(.v) ディレイ:0-127(.b) | 32768+(0-32767)(.w) →p_port_dly
(ただしNote Number(.b)≧$80のときのみ)
Port.Time(.v) ポルタメントタイム:0-127(.b) →p_port_cnt
32768+(0-32767)(.w)
(ただしDest.Note≧$80のときのみ)
Step Time(.v) ステップタイム:1-127(.b) | 32768+(1-32767)(.w) →p_step_time
Gate Time(.v) ゲートタイム:$8000(.w)=tie →k_gate_time
0-127(.b) | 32768+(128-32767)(.w)
Velocity(.b) ベロシティ:0-127 | 128=use default, →p_velo
129~191,192,193~255は-63~-1,0,1~+63に対応する
合計6-11bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
■$90~$9f
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●音量(MML V,@V)
$90(.b) ZMD
Volume(.b) 音量値:0-127 128段階指定時 →p_vol
$80+(0~16) 16段階指定時
合計2bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●相対音量(MML _~)
$91(.b) ZMD
Volume(.b) 相対音量値:-128~127
合計2bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●相対音量2
$92(.b) ZMD
Volume(.b) 相対音量値:-128~127 →p_vol
合計2bytes
($91との違い:$91は必ず絶対音量次元で相対音量を設定するが、$92は直前の音量
コマンド(128/16段階)の次元で相対音量を設定する)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●ベロシティ(MML U/@U)
$93(.b)
Velocity(.b) ベロシティ値:0-127 128段階指定時 →p_velo
$80+(0~16) 16段階指定時
合計2bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●相対ベロシティ(MML U±/@U±)
$94(.b) ZMD
Velocity(.b) 相対ベロシティ値:-128~127 →p_velo
合計2bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●ピッチモジュレーション・モード(MML M)
$95(.b) ZMD
pmod mode(.b) モード値:-1=normal 0=FM 1=MIDI →p_pmod_mode
合計2bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●ピッチモジュレーション・スイッチ(MML @M)
$96(.b) ZMD
Switch(.b) スイッチ:[0]=off $ff=1/8mode →p_pmod_sw
$01=optional 8 point mode $02=on by previous mode
合計2bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●ピッチモジュレーション同期設定(MML H)
$97(.b) ZMD
Sync Mode(.b) 同期モード →p_pmod_flg
d7:キーオン時に波形初期化 0:OFF [1]:ON
d6:タイ時に波形初期化 [0]:OFF 1:ON
d5:休符時に波形初期化 [0]:OFF 1:ON
d4:波形をキーオン毎に更新 [0]:NO 1:YES
d3:波形を休符毎に更新 [0]:NO 1:YES
Delay(.w) 同期ディレイ:1~65535(0の場合は無指定を意味する)→p_pmod_syncnt
合計4bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●オートベンド・スイッチ(MML [BEND.SWITCH])
$98(.b) ZMD
Switch(.b) スイッチ:[0]=off 1=on →p_bend_sw
合計2bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●アフタータッチシーケンス・スイッチ(MML [AFTERTOUCH.SWITCH])
$99(.b) ZMD
Switch(.b) スイッチ:[0]=off $ff=1/8mode →p_aftc_sw
$01=optional 8 point mode $02=on by previous mode
合計2bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●アフタータッチシーケンス同期設定(MML [AFTERTOUCH.SYNC])
$9a(.b) ZMD
Sync Mode(.b) 同期モード →p_aftc_flg
d7:キーオン時に波形初期化 0:OFF [1]:ON
d6:タイ時に波形初期化 [0]:OFF 1:ON
d5:休符時に波形初期化 [0]:OFF 1:ON
Delay(.w) 同期ディレイ:1~65535(0の場合は無指定を意味する)→p_aftc_syncnt
合計4bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●エンハンスドベロシティシーケンス・スイッチ(MML [VELOCITY.SWITCH])
$9b(.b) ZMD
Switch(.b) スイッチ:[0]=off →p_arcc_sw+p_vseq_param
$01=optional 8 point mode, $02=on by previous mode
合計2bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●アゴーギク・スイッチ(MML [AGOGIK.SWITCH])
$9c(.b) ZMD
switch(.b) スイッチ:[0]=off $ff=1/8mode →(agogik_work_ptr)+p_pmod_sw
$01=optional 8 point mode $02=on by previous mode
合計2bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●アゴーギク同期設定(MML [AGOGIK.SYNC])
$9d(.b) ZMD
Sync Mode(.b) 同期モード →p_agogik_flg
d7:キーオン時に波形初期化 [0]:OFF 1:ON
d6:タイ時に波形初期化 [0]:OFF 1:ON
d5:休符時に波形初期化 [0]:OFF 1:ON
d4:波形をキーオン毎に更新 [0]:NO 1:YES
d3:波形を休符毎に更新 [0]:NO 1:YES
d2:小節線毎に更新 [0]:NO 1:YES
Delay(.w) 同期ディレイ:1~65535(0の場合は無指定を意味する)→p_agogik_count
合計4bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●タイ・モード(MML @J)
$9e(.b) ZMD
Tie Mode タイモード:(0=normal 1=special) →d3 of p_md_flg
合計2bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●PCM再生モード(MML [PCM_MODE])
$9f(.b) ZMD
PCM mode PCMモード:(0=tone mode 1=timbre mode →d2 of p_md_flg
合計2bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
■$a0~$af
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●パン 絶対指定(MML P/@P)
$a0(.b) ZMD
Pan(.b) パンポット:(0-127:L~M~R,128:off) →p_pan
合計2bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●パン 相対指定(MML P/@P)
$a1(.b) ZMD
Pan(.b) 相対パンポット値:-128~127 →p_pan
合計2bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●スロットマスク(MML [SLOT_SEPARRATION])
$a2(.b) ZMD
Mode(.b) モード:%0000000~%1111000 →p_om
d3:OP1,d4:OP2,d5:OP3,d6:OP4
bit=1:off,bit=0:on
合計2bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●ダンパーペダル(MML @D)
$a3(.b) ZMD
Damper(.b) ダンパー値:0-63=off, 64-127=on →p_damper
合計2bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●ノン・オフ・モード(MML @R)
$a4(.b) ZMD
Mode(.b) モード:$00=通常, $80=ノートオフなし →p_track_mode
合計2bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●ベンドレンジ変更(MML G)
$a5(.b) ZMD
Range(.b) レンジ値:0-127 [12] →p_@b_range
合計2bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●周波数変更(MML @F)
$a6(.b) ZMD
Frq(.b) 周波数番号:0-6 [4] →p_frq
合計2bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●チャンネルプレッシャー
$a8(.b) ZMD
Pressure(.b) チャンネルプレッシャー値:0-127
合計2bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●相対チャンネルプレッシャー
$a9(.b) ZMD
Pressure(.b) 相対チャンネルプレッシャー値:-128~127
(相対演算はベロシティと行われるが演算結果はp_veloには
反映されない)
合計2bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●キートランスポーズ(MML K)
$ab(.b) ZMD
Value(.b) キートランスポーズ値:-128~+127
合計2bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●FM/PCMトラックボイスリザーブ(MML [VOICE_RESERVE])
$ac(.b) ZMD
n of voices(.b) ボイスリザーブ値:0-255=1~256 →p_voice_rsv
合計2bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●ベロシティ同期設定(MML [VELOCITY.SYNC])
$ad(.b) ZMD
Sync Mode(.b) 同期モード →p_arcc_flg+p_vseq_param
d7:小節線同期 [0]:off 1:on
d6:ベロシティが指定されているケースでも [0]:off 1:on
ダミーで割り当てるか
d5:休符割り当て [0]:off 1:on
Delay(.w) 同期ディレイ:1~65535 →p_arcc_syncnt+p_vseq_param
(0の場合は無指定を意味する)
合計4bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
■$b0~$bf
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●ピッチモジュレーション波形セレクト(MML S)
$b0(.b) ZMD
Wave Form(.w) 波形番号:0-7=プリセット波形 →p_pmod_wf
(0:鋸歯波 1:矩形波 2:三角波 3:ワンショット鋸歯波
4:ランダム波)
$8000+0~32767=ユーザー波形(波形メモリ)
合計3bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●アゴーギク波形セレクト(MML [AGOGIK.WAVEFORM])
$b1(.b) ZMD
Wave Form(.w) 波形番号:0-7=プリセット波形 →(agogik_work_ptr)+p_pmod_wf
$8000+0~32767=ユーザー波形(波形メモリ)
合計3bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●V2コンパチ・音長0ノート(発音のみ行う)
$b2(.b) ZMD
Note(.b) ノート番号:0-127
Velocity(.b) ベロシティ:0-127, 128=use default, →p_velo
129~191,192,193~255は-63~-1,0,1~63に対応する
合計3bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●ARCC・スイッチ(MML @A)
$b3(.b) ZMD
Arcc No(.b) ARCC番号:(0-3)×2
Switch(.b) スイッチ:[0]=off $ff=1/8mode $01=optional 8 point mode
$02=on by previous mode
→p_arcc_sw+p_arcc_param+(0-3)*trwk_size
合計3bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●ARCC・モード(MML M)
$b4(.b) ZMD
Arcc No(.b) ARCC番号:(0-3)×2
Arcc Mode(.b) モード:$ff=normal $01=extended mode →p_arcc_mode
合計3bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●ARCC同期設定(MML H)
$b5(.b) ZMD
Arcc No(.b) ARCC番号:(0-3)×2
Sync Mode(.b) 同期モード →p_arcc_flg
d7:キーオン時に波形初期化 0:OFF [1]:ON
d6:タイ時に波形初期化 [0]:OFF 1:ON
d5:休符時に波形初期化 [0]:OFF 1:ON
d4:波形をキーオン毎に更新 [0]:NO 1:YES
d3:波形を休符毎に更新 [0]:NO 1:YES
Delay(.w) 同期カウント:1~65535(0の場合は無指定を意味する)→p_arcc_syncnt
合計5bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●OPMレジスタ書き込み(MML [OPM])
$b6(.b) ZMD
Reg.Number(.b) レジスタ番号:$80+04:NFRQ $80+05:NE $80+06:LFRQ $80+07:PMD
$80+08:AMD $80+09:WF $80+10:CON $80+11:FB
$80+12:PAN $80+13:AMS $80+14:PMS
または
(0:OP1,1:OP3,2:OP2,3:OP4)*16
+(0:MUL,1:DT1,2:TL,3:AR,4:KS,5:1DR,6:AMS-EN,
7:2DR,8:DT2,9:RR,10:1DL)
Data(.b) データ:0-255
合計3bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●相対OPMレジスタ書き込み(MML [OPM])
$b7(.b) ZMD
Reg.Number(.b) レジスタ番号:$80+04:NFRQ $80+05:NE $80+06:LFRQ $80+07:PMD
$80+08:AMD $80+09:WF $80+10:CON $80+11:FB
$80+12:PAN $80+13:AMS $80+14:PMS
または
(0:OP1,1:OP3,2:OP2,3:OP4)*16
+(0:MUL,1:DT1,2:TL,3:AR,4:KS,5:1DR,6:AMS-EN,
7:2DR,8:DT2,9:RR,10:1DL)
Data(.b) データ:-128~127
合計3bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●ディチューン@B range(MML @B)
$b8(.b) ZMD
Detune(.w) ディチューン:-8192~8191 →p_detune
合計3bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●ディチューン@K range(MML @K)
$b9(.b) ZMD
Detune(.w) ディチューン:-7680~7680 →p_detune
合計3bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●相対ディチューン@B range(MML @B±)
$ba(.b) ZMD
Detune(.w) ディチューン:-8192~8191 →p_detune
合計3bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●相対ディチューン@K range(MML @K±)
$bb(.b) ZMD
Detune(.w) ディチューン:-7680~7680 →p_detune
合計3bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●レジスタ書き込み(コントロールチェンジ設定)(MML Y)
$bc(.b) ZMD
Register(.b) レジスタ:0-255
Data(.b) データ:0-255
合計3bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●強制再演奏(MML Jn)
$bd(.b) ZMD
Track(.w) トラック番号:0-65534
合計3bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●トラック同期(MML Wn)
$be(.b) ZMD
Track(.w) トラック番号:0-65534
合計3bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●Q/@Qコマンド
$bf(.b) ZMD
Q/@Q value(.w) Q/@Q値:0-256 ゲートタイムは (step*Q)/256 で与えられる
-1~-32768:@Q ゲートタイムは step+@Q で与えられる
→p_Q_gate
合計3bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
■$c0~$cf
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●ポリフォニックプレッシャー(MML [POLYPHONIC PRESSURE])
$c0(.b) ZMD
Note Number(.b) ノート番号:0-127=プレッシャー値は絶対指定
128+(0-127)=プレッシャー値は相対指定
Pressure(.b) プレッシャー値:0-127
-127~+127(相対演算はベロシティと行われるが
演算結果はp_veloには反映されない)
合計3bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●テンポ(タイマー値)(MML @T)
$c1(.b) ZMD
Timer Value(.w) タイマ値:0-65535 →timer_value,m_tmp_buf
合計3bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●相対テンポ(タイマー値)(MML @T)
$c2(.b) ZMD
Timer Value(.w) 相対タイマ値:-32768~32767 →timer_value,m_tmp_buf
合計3bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●テンポ(MML T)
$c3(.b) ZMD
Tempo Value(.w) テンポ:0-65535 →timer_value,m_tmp_buf
合計3bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●相対テンポ(MML T)
$c4(.b) ZMD
Tempo Value(.w) 相対テンポ値:-32768~32767 →timer_value,m_tmp_buf
合計3bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●シーケンスコマンド(MML [D.C.] [DO] [!] [@] [KEY] [METER])
$c5(.b) ZMD
func no.(.b) 0:D.C. 1:DO 2:! 3:@ 4:KEY 5:METER
n of Param(.b) 後続パラメータ数:0-255
Params(.b) パラメータ群(n of Params(.b)の数だけ続く)
合計3-?bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●音色バンク切り換え(MML I)
$c6(.b) ZMD
Bank MSB(.b) バンク上位バイト:0-127 (負値の場合は無指定)
Bank LSB(.b) バンク下位バイト:0-127 (負値の場合は無指定)
合計3bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
音色切り換え(MML @)
$c7(.b) ZMD
Timbre Number(.w) 音色番号:0-32767 →p_pgm
合計3bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●音色切り換え2(MML [TIMBRE])
$c8(.b) ZMD
Timbre Number(.w) 音色番号:0-32767 →p_pgm
合計3bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●ARCC波形セレクト(MML S)
$c9(.b) ZMD
Arcc No(.b) ARCC番号:(0-3)×2
Wave Form(.w) 波形番号:0-7=プリセット波形 →p_arcc_wf
(0:鋸歯波 1:矩形波 2:三角波 3:ワンショット鋸歯波
4:ランダム波)
$8000+0~32767=ユーザー波形(波形メモリ)
合計4bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●楽器ID設定(MML @I)
$ca(.b) ZMD
Maker(.b) メーカーID:0-127 (負値の場合は無指定) →p_maker
Device(.b) デバイスID:0-127 (負値の場合は無指定) →p_device
Module(.b) モジュールID:0-127 (負値の場合は無指定) →p_module
合計4bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●小節ジャンプ(MML [JUMP])
$cb(.b) ZMD
Measure No.(.l) 小説番号:0~4294967295
合計5bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●チャンネル・アサイン(MML N,@N,[CH_ASSIGN],[ASSIGN])
$cc(.b) ZMD
Device-ID(.w) 音源ID:(FM=0,(AD)PCM=1,MIDI1=$8000,MIDI2=$8001, →p_type
MIDI3=$8002,MIDI4=$8003)
Channel(.w) チャンネル番号:0-32767 →p_ch
合計5bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●リピート開始(MML |:)
$cd(.b) ZMD
Repeat Count(.w) 繰り返し回数:(0-[1]-65534:1-[2]-65535)
Repeat Work(.w) $0000.w ワーク
合計5bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●リピート終端(MML :|)
$ce(.b) ZMD
Offset(.l) リピート開始ZMD($cd)のRepeat Count(.w)までのオフセット値
合計5bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●NRPN(MML @Y)
$cf(.b) ZMD
Address H(.b) アドレス上位:0-127
Address L(.b) アドレス下位:0-127
Data H(.b) データ上位:0-127(128以上の値を設定した場合は省略となみされる)
Data L(.b) データ下位:0-127(128以上の値を設定した場合は省略となみされる)
合計5bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
■$d0~$df
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●SEGNO(MML [SEGNO])
$d0(.b) ZMD
Offset(.l) [D.S.]のD.S.Flag(.b)までのオフセットアドレス
(0の場合はコマンド無視)
合計5bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●CODA(MML [CODA])
$d1(.b) ZMD
Offset(.l) [TOCODA]のCoda Flag(.b)までのオフセットアドレス
合計5bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●スキップZMD
$d2(.b) ZMD
Mode(.b) モード:0=offset 1=absolute
Offset(.l) Mode(.b)=0の場合は相対アドレスジャンプ
Mode(.b)=1の場合は絶対アドレスに相当する
合計6bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●D.S.(MML [D.S.])
$d3(.b) ZMD
D.S.Flag(.b) D.S.フラグ
d7:segno設定があったか(1:done),
d6:d.s.処理をしたか(1:done)
Offset(.l) [SEGNO]のZMDの次のZMDのアドレスまでのオフセット
→D.S.処理をしたらp_fine_flgをセット
合計6bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●TO CODA(MML [TOCODA])
$d4(.b) ZMD
Coda Flag(.b) CODAフラグ
d7:coda設定があったか(1:done)
d6:tocoda処理をしたか(1:done)
Offset(.l) [CODA]のZMDの次のZMDのアドレスまでのオフセット
(0の場合はコマンド無視)
合計6bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●GOSUB(MML [GOSUB])
$d5(.b) ZMD
Track No.(.w) トラック番号:0-65534(ただし65535=パターントラック)
Offset(.l) 飛び先オフセットアドレス
合計7bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●チャンネル・フェーダー(MML [CH_FADER])
$d6(.b) ZMD
Device-ID(.w) 音源ID:(FM=0,(AD)PCM=1,MIDI1=$8000,MIDI2=$8001,
MIDI3=$8002,MIDI4=$8003,
カレントMIDI=$7ffd,
-1=全音源が操作対象となる)
Channel(.w) チャンネル番号:0-32767,-1=全チャンネル
omt(.b) 省略フラグ(bit=1で対応パラメータが後続する)
d0:Speed
d1:Start Level
d2:End Level
Speed(.w) 移動速度:0~65535(0=移動しない)
Start Level(.b) 開始レベル:0-128
End Level(.b) 終了レベル:0-128
合計6-9bytes
または
$d6(.b) ZMD
$7fff(.w) 固定値
Track No.(.w) トラック番号:0-65534,-1=全トラック
omt(.b) 省略フラグ(bit=1で対応パラメータが後続する)
d0:Speed
d1:Start Level
d2:End Level
Speed(.w) 移動速度:0~65535(0=移動しない)
Start Level(.b) 開始レベル:0-128
End Level(.b) 終了レベル:0-128
合計6-9bytes
または
$d6(.b) ZMD
$7ffe(.w) 固定値
Track ID.(.w) トラック識別子:0=現在のトラック -1=全トラック
omt(.b) 省略フラグ(bit=1で対応パラメータが後続する)
d0:Speed
d1:Start Level
d2:End Level
Speed(.w) 移動速度:0~65535(0=移動しない)
Start Level(.b) 開始レベル:0-128
End Level(.b) 終了レベル:0-128
合計6-9bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●マスター・フェーダー(MML [MASTER_FADER])
$d7(.b) ZMD
Device-ID(.w) 音源ID:(FM=0,(AD)PCM=1,MIDI1=$8000,MIDI2=$8001,
MIDI3=$8002,MIDI4=$8003,
-1=全音源が操作対象となる)
omt(.b) 省略フラグ(bit=1で対応パラメータが後続する)
d0:Speed
d1:Start Level
d2:End Level
Speed(.w) 移動速度:0-65535(0=移動しない)
Start Level(.b) 開始レベル:0-128
End level(.b) 終了レベル:0-128
合計4-7bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●リピートスキップ(MML |n)
$d8(.b) ZMD
Count(.w) 演奏許可繰り返し回数:0-65534(1-65535に対応)
Offset(.l) リピート開始のZMDのRepeat Work(.w)までのオフセットアドレス
Offset(.l) リピート終端のZMDの外までのオフセットアドレス
合計11bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●リピートスキップ2(MML |)
$d9(.b) ZMD
Offset(.l) リピート開始のZMDのRepeat Work(.w)までのオフセットアドレス
Offset(.l) 次のリピートスキップのZMDへの、または次のリピート終端のZMD
までのオフセットアドレス
合計9bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●ピッチモジュレーション・振幅増加/減衰(MML [VIBRATO.DEEPEN])
$da(.b) ZMD
omt(.b) 省略フラグ(bit=1で対応パラメータが後続する)
d7:増減モード [0]:OFF 1:ON
d6:Speed 0:パラメータ有り 1:なし
d5:Depth Accelarator 0:パラメータ有り 1:なし
d4:Repeat Time 0:パラメータ有り 1:なし
Speed(.v) 増減速度:0-127(.b), 32768+(0-32767)(.w)
Depth Acc(.w) 増減加速度:-32768~32767
Repeat Time(.v) 増減繰り返し回数:0-127(.b), 32768+(0-32767)(.w)
0は無限回に相当する
合計5-8bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●ARCC・振幅増加/減衰(MML [ARCCn.DEEPEN])
$db(.b) ZMD
arcc no(.b) (0-3)×2
omt(.b) 省略フラグ(bit=1で対応パラメータが後続する)
d7:増減モード [0]:OFF 1:ON
d6:Speed 0:パラメータ有り 1:なし
d5:Depth Accelarator 0:パラメータ有り 1:なし
d4:Repeat Time 0:パラメータ有り 1:なし
Speed(.v) 増減速度:0-127(.b), 32768+(0-32767)(.w)
Depth Acc(.w) 増減加速度:-32768~32767
Repeat Time(.v) 増減繰り返し回数:0-127(.b), 32768+(0-32767)(.w)
0は無限回に相当する
合計6-9bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●ベロシティ・振幅増加/減衰(MML [VELOCITY.DEEPEN])
$dc(.b) ZMD
omt(.b) 省略フラグ(bit=1で対応パラメータが後続する)
d7:増減モード [0]:OFF 1:ON
d6:Speed 0:パラメータ有り 1:なし
d5:Depth Accelarator 0:パラメータ有り 1:なし
d4:Repeat Time 0:パラメータ有り 1:なし
Speed(.v) 増減速度:0-127(.b), 32768+(0-32767)(.w)
Depth Acc(.b) 増減加速度:-128~127
Repeat Time(.v) 増減繰り返し回数:0-127(.b), 32768+(0-32767)(.w)
0は無限回に相当する
合計5-7bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●アゴーギク・振幅増加/減衰(MML [AGOGIK.DEEPEN])
$dd(.b) ZMD
omt(.b) 省略フラグ(bit=1で対応パラメータが後続する)
d7:増減モード [0]:OFF 1:ON
d6:Speed 0:パラメータ有り 1:なし
d5:Depth Accelarator 0:パラメータ有り 1:なし
d4:Repeat Time 0:パラメータ有り 1:なし
Speed(.v) 増減速度:0-127(.b), 32768+(0-32767)(.w)
Depth Acc(.w) 増減加速度:-32768~32767
Repeat Time(.v) 増減繰り返し回数:0-127(.b), 32768+(0-32767)(.w)
0は無限回に相当する
合計6-8bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●音色スプリット([TIMBRE_SPLIT],[PROGRAM_SPLIT])
$de(.b) ZMD
n of Param(.b) スイッチフラグ/パラメータの個数
d7:スイッチ(0:OFF,1:ON)
d0-d6:パラメータの数:0-8
{
Range Start Note No.(.b) スプリット開始ノート番号:0-127
Range End Note No.(.b) スプリット終端ノート番号:0-127
Bank No.(.w) 音色バンク:0-16383(MIDI)/0-255(FM,ADPCM)
Timbre No.(.w) 音色番号:0-127 or 0-32767
}×n of Param(.b) n of Param(.b)回パラメータ群が後続する
合計2-50bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●エンハンスドベロシティシーケンス波形セレクト(MML [VELOCITY.WAVEFORM])
$df(.b) ZMD
omt(.b) 省略フラグ(bit=1で対応パラメータが後続する)
d0:Wave Form
d1:Origin Value
d1:Phase Mode
Wave Form(.w) 波形番号:0-7=プリセット波形
(0:鋸歯波 1:矩形波 2:三角波
3:ワンショット鋸歯波 4:ランダム波)
$8000+0~32767=ユーザー波形(波形メモリ)
→p_arcc_wf+p_vseq_param
Origin Value(.b) 波形の基準値:0-127
Phase Mode(.b) 位相モード:0,-1(0:正位相,-1:逆位相)
合計3~6bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
■$e0~$ef
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●オートベンド@B range(MML @B)
$e0(.b) ZMD
omt(.b) 省略フラグ(bit=1で対応パラメータが後続する)
d7:Start Detune
d6:Destination Detune
d5:Delay
d4:Tail/Port.Time
(omt(.b)=0のときスイッチオフ)
Start detune(.w) 開始ディチューン:-32768~32767 →p_detune
Destination detune(.w) 目的ディチューン:-32768~32767 →p_bend_dst
Delay(.w) ディレイ:-32768~32767 →p_bend_dly/p_port_cnt
Tail/Port.Time(.w) ベンド時間/持続時間: →p_bend_tail
ベンド時間:1-32767
無指定:0
持続時間:-1~-32768
合計2-10bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●オートベンド@K range(MML @K)
$e1(.b) ZMD
omt(.b) 省略フラグ(bit=1で対応パラメータが後続する)
d7:Start Detune
d6:Destination Detune
d5:Delay
d4:Tail/Port.Time
(omt(.b)=0のときスイッチオフ)
Start detune(.w) 開始ディチューン:-32768~32767 →p_detune
Destination detune(.w) 目的ディチューン:-32768~32767 →p_bend_dst
Delay(.w) ディレイ:-32768~32767 →p_bend_dly/p_port_cnt
Tail/Port.Time(.w) ベンド時間/持続時間: →p_bend_tail
ベンド時間:1-32767
無指定:0
持続時間:-1~-32768
合計2-10bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●ピッチモジュレーション振幅(1/8,optional 8point)(MML @M,[VIBRATO.DEPTH])
$e2(.b) ZMD
Mode(.b) モード:0=無指定,1=OPTIONAL,-1=1/8 MODE,2=以前のモードでON
omt(.b) 省略フラグ(bit=1で対応パラメータが後続する)
d0:1番目の振幅値に対応
d1:2番目の振幅値に対応
d2:3番目の振幅値に対応
d3:4番目の振幅値に対応
d4:5番目の振幅値に対応
d5:6番目の振幅値に対応
d6:7番目の振幅値に対応
d7:8番目の振幅値に対応
omt(.b)=0のときがスイッチオフの指定となる
Depth(.w)*(1-8) 振幅:-32768~32767 →p_pmod_dpt_tbl
合計5-19bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●ピッチモジュレーション・スピード (8point)(MML @S,[VIBRATO.SPEED])
$e3(.b) ZMD
omt(.b) 省略フラグ(bit=1で対応パラメータが後続する)
d0:1番目の速度値に対応
d1:2番目の速度値に対応
d2:3番目の速度値に対応
d3:4番目の速度値に対応
d4:5番目の速度値に対応
d5:6番目の速度値に対応
d6:7番目の速度値に対応
d7:8番目の速度値に対応
omt(.b)=0はありえない
Speed(.w)*(1-8) 速度値:1-65535 →p_pmod_spd_tbl
(0はエラー,値はMMLのパラメータで与えられたものを
2倍したもの)
合計4-18bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●ピッチモジュレーション・ディレイ(8point)(MML @H,[VIBRATO.DELAY])
$e4(.b) ZMD
omt(.w) 省略フラグ(bit=1で対応パラメータが後続する)
d0:1番目のディレイ値に対応
d1:2番目のディレイ値に対応
d2:3番目のディレイ値に対応
d3:4番目のディレイ値に対応
d4:5番目のディレイ値に対応
d5:6番目のディレイ値に対応
d6:7番目のディレイ値に対応
d7:8番目のディレイ値に対応
d8:9番目のディレイ値に対応
omt(.b)=0はありえない
Delay(.w)*(1-9) ディレイ値:0-65535 →p_pmod_1st_dly~p_pmod_8st_tbl
合計5-21bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●ARCC振幅(1/8,optional 8point)(MML @A,[ARCCn.LEVEL])
$e5(.b) ZMD
Arcc No(.b) ARCC番号:(0-3)×2
Mode(.b) モード:0=無指定,1=OPTIONAL,-1=1/8 MODE,2=以前のモードでON
omt(.b) 省略フラグ(bit=1で対応パラメータが後続する)
d0:1番目の振幅値に対応
d1:2番目の振幅値に対応
d2:3番目の振幅値に対応
d3:4番目の振幅値に対応
d4:5番目の振幅値に対応
d5:6番目の振幅値に対応
d6:7番目の振幅値に対応
d7:8番目の振幅値に対応
omt(.b)=0のときがスイッチオフの指定となる
Depth(.b)*(1-8) 振幅値:-128~127 →p_arcc_dpt_tbl
合計5-12bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●ARCCスピード(8point)(MML @S,[ARCCn,SPEED])
$e6(.b) ZMD
Arcc No(.b) ARCC番号:(0-3)×2
omt(.b) 省略フラグ(bit=1で対応パラメータが後続する)
d0:1番目の速度値に対応
d1:2番目の速度値に対応
d2:3番目の速度値に対応
d3:4番目の速度値に対応
d4:5番目の速度値に対応
d5:6番目の速度値に対応
d6:7番目の速度値に対応
d7:8番目の速度値に対応
omt(.b)=0はありえない
Speed(.w)*(1-8) 速度値:1-65535 →p_arcc_spd_tbl
(0はエラー,値はMMLのパラメータで与えられたものを
2倍したもの)
合計5-19bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●ARCCディレイ(8point)(MML @H,[ARCCn,DELAY])
$e7(.b) ZMD
Arcc No(.b) ARCC番号:(0-3)×2
omt(.w) 省略フラグ(bit=1で対応パラメータが後続する)
d0:1番目のディレイ値に対応
d1:2番目のディレイ値に対応
d2:3番目のディレイ値に対応
d3:4番目のディレイ値に対応
d4:5番目のディレイ値に対応
d5:6番目のディレイ値に対応
d6:7番目のディレイ値に対応
d7:8番目のディレイ値に対応
d8:9番目のディレイ値に対応
omt(.b)=0はありえない
Delay(.w)*(1-9) ディレイ値:0-65535 →p_arcc_1st_dly~p_arcc_8st_tbl
合計6-22bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●アフタータッチシーケンス(1/8,optional 8point)(MML @Z,[AFTERTOUCH.LEVEL])
$e8(.b) ZMD
Mode(.b) モード:0=無指定,1=OPTIONAL,-1=1/8 MODE,2=以前のモードでON
omt(.b) 省略フラグ(bit=1で対応パラメータが後続する)
d0:1番目のアフタータッチ値に対応
d1:2番目のアフタータッチ値に対応
d2:3番目のアフタータッチ値に対応
d3:4番目のアフタータッチ値に対応
d4:5番目のアフタータッチ値に対応
d5:6番目のアフタータッチ値に対応
d6:7番目のアフタータッチ値に対応
d7:8番目のアフタータッチ値に対応
omt(.b)=0のときがスイッチオフの指定となる
Relative(.b) 相対値フラグ(bit=1で対応パラメータが相対指定であることを表す)
d0:1番目のアフタータッチ値に対応
d1:2番目のアフタータッチ値に対応
d2:3番目のアフタータッチ値に対応
d3:4番目のアフタータッチ値に対応
d4:5番目のアフタータッチ値に対応
d5:6番目のアフタータッチ値に対応
d6:7番目のアフタータッチ値に対応
d7:8番目のアフタータッチ値に対応
Level(.b)*(1-8) アフタータッチ値:0-127 →p_aftc_tbl
合計5-12bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●アフタータッチシーケンス・ディレイ(8point)(MML [AFTERTOUCH.DELAY])
$e9(.b) ZMD
omt(.w) 省略フラグ(bit=1で対応パラメータが後続する)
d0:1番目のディレイ値に対応
d1:2番目のディレイ値に対応
d2:3番目のディレイ値に対応
d3:4番目のディレイ値に対応
d4:5番目のディレイ値に対応
d5:6番目のディレイ値に対応
d6:7番目のディレイ値に対応
d7:8番目のディレイ値に対応
d8:9番目のディレイ値に対応
omt(.b)=0はありえない
Delay(.w)*(1-9) ディレイ値:0-65535 →p_aftc_8st_tbl
合計5-21bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●エンハンスドベロシティ・シーケンス振幅(8point)(MML [VELOCITY.LEVEL])
$ea(.b) ZMD
Mode(.b) モード:0=無指定,1=OPTIONAL,2=以前のモードでON
omt(.b) 省略フラグ(bit=1で対応パラメータが後続する)
d0:1番目の振幅値に対応
d1:2番目の振幅値に対応
d2:3番目の振幅値に対応
d3:4番目の振幅値に対応
d4:5番目の振幅値に対応
d5:6番目の振幅値に対応
d6:7番目の振幅値に対応
d7:8番目の振幅値に対応
omt(.b)=0のときがスイッチオフの指定となる
Level(.b)*(1-8) ベロシティ値:-128~127 →p_arcc_dpt_tbl+p_vseq_param
合計4-11bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●エンハンスドベロシティ・シーケンス・スピード(8point)(MML [VELOCITY.SPEED])
$eb(.b) ZMD
omt(.b) 省略フラグ(bit=1で対応パラメータが後続する)
d0:1番目の速度値に対応
d1:2番目の速度値に対応
d2:3番目の速度値に対応
d3:4番目の速度値に対応
d4:5番目の速度値に対応
d5:6番目の速度値に対応
d6:7番目の速度値に対応
d7:8番目の速度値に対応
omt(.b)=0はありえない
Speed(.w)*(1-8) 速度値:1-65535 →p_arcc_spd_tbl+p_vseq_param
(0はエラー,値はMMLのパラメータで与えられたものを
2倍したもの)
合計4-18bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●エンハンスドベロシティ・シーケンス・ディレイ(8point)(MML [VELOCITY.DELAY])
$ec(.b) ZMD
omt(.w) 省略フラグ(bit=1で対応パラメータが後続する)
d0:1番目のディレイ値に対応
d1:2番目のディレイ値に対応
d2:3番目のディレイ値に対応
d3:4番目のディレイ値に対応
d4:5番目のディレイ値に対応
d5:6番目のディレイ値に対応
d6:7番目のディレイ値に対応
d7:8番目のディレイ値に対応
d8:9番目のディレイ値に対応
omt(.b)=0はありえない
Delay(.w)*(1-9) ディレイ値:0-65535 →p_arcc_8st_tbl+p_vseq_param
合計5-21bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●アゴーギク・振幅(1/8,optional 8point)(MML [AGOGIK.LEVEL])
$ed(.b) ZMD
Mode(.b) モード:0=無指定,1=OPTIONAL,-1=1/8 MODE,2=以前のモードでON
omt(.b) 省略フラグ(bit=1で対応パラメータが後続する)
d0:1番目の振幅値に対応
d1:2番目の振幅値に対応
d2:3番目の振幅値に対応
d3:4番目の振幅値に対応
d4:5番目の振幅値に対応
d5:6番目の振幅値に対応
d6:7番目の振幅値に対応
d7:8番目の振幅値に対応
omt(.b)=0のときがスイッチオフの指定となる
Depth(.w)*(1-8) 振幅:-32768~32767 →(agogik_work_ptr)+p_pmod_dpt_tbl
合計5-19bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●アゴーギク・スピード(8point)(MML [AGOGIK.SPEED])
$ee(.b) ZMD
omt(.b) 省略フラグ(bit=1で対応パラメータが後続する)
d0:1番目の速度値に対応
d1:2番目の速度値に対応
d2:3番目の速度値に対応
d3:4番目の速度値に対応
d4:5番目の速度値に対応
d5:6番目の速度値に対応
d6:7番目の速度値に対応
d7:8番目の速度値に対応
omt(.b)=0はありえない
Speed(.w)*(1-8) 速度値:1-65535 →(agogik_work_ptr)+p_pmod_spd_tbl
(0はエラー,値はMMLのパラメータで与えられたものを
2倍したもの)
合計4-18bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●アゴーギク・ディレイ(8point)(MML [AGOGIK.DELAY])
$ef(.b) ZMD
omt(.w) 省略フラグ(bit=1で対応パラメータが後続する)
d0:1番目のディレイ値に対応
d1:2番目のディレイ値に対応
d2:3番目のディレイ値に対応
d3:4番目のディレイ値に対応
d4:5番目のディレイ値に対応
d5:6番目のディレイ値に対応
d6:7番目のディレイ値に対応
d7:8番目のディレイ値に対応
d8:9番目のディレイ値に対応
omt(.b)=0はありえない
Delay(.w)*(1-9) ディレイ値:0-65535 →(agogik_work_ptr)+p_pmod_8st_tbl
合計5-21bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
■$f0~$ff
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●エフェクト設定(MML @E,[EFFECT])
・通常(GS音源など)
$f0(.b) ZMD
omt(.b) 省略フラグ(bit=1で対応パラメータが後続する)
d0:Effect1
d1:Effect3
d2:Effect4
d3:Effect2
d4:Effect5
Effect1(.b) エフェクト1値:0-127 (GS:リバーブ) →p_effect1
Effect3(.b) エフェクト3値:0-127 (GS:コーラス) →p_effect3
Effect4(.b) エフェクト4値:0-127 (GS:ディレイ) →p_effect4
Effect2(.b) エフェクト2値:0-127 →p_effect2
Effect5(.b) エフェクト5値:0-127 →p_effect5
合計3-8bytes
・MT32系の場合(MT32,CM64など)
$f0(.b) ZMD
omt(.b) 省略フラグ(bit=1で対応パラメータが後続する)
d0:PART No.
d1:Switch
PART No.(.b) パート番号:0~7 or 8(リズム)
Switch(.b) エフェクトスイッチ:0=OFF,1=ON
合計3-5bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●ワーク直接書き換え(MML ?)
$f1(.b) ZMD
Mode(.b) 下位4ビット:Data Offsetのデータサイズ
(0=1バイト 1=2バイト 3=4バイト)
上位4ビット:Addr.Offsetのデータサイズ
(0=1バイト 1=2バイト 3=4バイト)
Addr.Offset(b/w/l) -2147483648~2147483647
Data (b/w/l) 0~4294967295
合計4-10bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●相対ワーク直接書き換え(MML ?)
$f2(.b) ZMD
Mode(.b) 下位4ビット:Data Offsetのデータサイズ
(0=1バイト 1=2バイト 3=4バイト)
上位4ビット:Addr.Offsetのデータサイズ
(0=1バイト 1=2バイト 3=4バイト)
Addr.Offset(b/w/l) -2147483648~2147483647
Data (b/w/l) -2147483648~2147483647
合計4-10bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●エクスクルーシブ(MML X,[ROLAND_EXCLUSIVE],[YAMAHA_EXCLUSIVE])
$f3(.b) ZMD
Exclusive Mode(.b) 0-255($ff:none $41:Roland $43:YAMAHA)
String Length(.b) コメント文字列長:0-255
String Data... コメント文字列 (No Endcode)
Data Length(.l) データ長:1~4294967296
Data(.b)... データ列:0-127
(exclusive mode=$41,$43のとき、チェックサムが自動送信されるため、データ列に
チェックサムが含まれる必要はない。)
合計9~?bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●MIDIデータ転送(MML @X,[MIDI_DATA])
$f4(.b) ZMD
String Length(.b) コメント文字列長:0-255
String Data... コメント文字列 (No Endcode)
Data Length(.l) データ長:1~4294967296
Data(.b)... データ列:0-127
合計7~?bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●ループ終端(MML [LOOP])
$f5(.b) ZMD
Offset(.l)*n オフセットアドレス値(任意の個数続く,Offset(.l)=0が終端)
オフセットアドレスで指し示される任意の番地を0で初期化する。
合計5~?bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●オートポルタメント(MML [AUTO_PORTAMENT])
$f6(.b) ZMD
Mode(.b) モード:0=OFF 1=ON -1=無指定 →p_port2_flg
omt(.b) 省略フラグ(bit=1で対応パラメータが後続する)
d7:Delay
d6:Tail/Port.Time
Delay(.w) ディレイ値:-32768~32767 →p_port2_dly
Tail/Port.Time(.w) ベンド時間/持続時間 →p_port2_tail
ベンド時間:1-32767
無指定:0
持続時間:-1~-32768
合計3-7bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●ARCCアサイン(MML @C,[ARCCn.CONTROL])
$f7(.b) ZMD
Arcc No(.b) ARCC番号:(0-3)×2
omt(.b) 省略フラグ(bit=1で対応パラメータが後続する)
d7:Ctrl Device
d6:Reset Value
d5:Origin Value
d4:Phase Mode
Ctrl Device(.b) MIDI:0-127 FM:$80=pan,$81=pms,$82=ams
$83=reserved,$84=amd,$85=pmd
$86=lfo spd,$87=noise spd
Reset Value(.b) MIDI:0-127 FM:0-255
Origin Value(.b) MIDI:0-127 FM:0-255
Phase Mode(.b) 位相モード:0,-1(0:正位相,-1:逆位相)
合計4-6bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●イベント制御(MML [EVENT])
$f8(.b) ZMD
Size(.l) 後続データのサイズ(Category(.b)~Data終端まで)
Category(.b) データの種類:(0=WORD,1=PICTURE,2=SOUND)
Object Class(.b) データの具体的な種類
Dummy(.w) 将来拡張用
Data... データ(データ構造はCategory,Classによって違う)
合計?bytes
・CategoryがWORDの時
$f8(.b) ZMD
Size(.l) 後続データのサイズ
0のときはData部は0で終了するファイルネーム文字列
Category(.b) データの種類:0=WORD(歌詞)
Object Class(.b) データの具体的な種類
0=単なる文字列 (1~255:RESERVED)
Dummy(.w) 将来拡張用
Data... データ列
Size(.l)=0の場合は0(.b)を終端コードに持つ文字列が
格納される。
合計?bytes
・CategoryがPICTUREの時
$f8(.b) ZMD
Size(.l) 後続データのサイズ
0のときはData部は0で終了するファイルネーム文字列
Category(.b) データの種類:1=PICTURE(画像)
Object Class(.b) データの具体的な種類
0=PICファイル (1~255:RESERVED)
Dummy(.w) 将来拡張用
Data... データ列
Size(.l)=0の場合は0(.b)を終端コードに持つ文字列が
格納される。
合計?bytes
CategoryがSOUNDの時
$f8(.b) ZMD
Size(.l) 後続データのサイズ
0のときはData部は0で終了するファイルネーム文字列
Category(.b) データの種類:2=SOUND(音声)
Object Class(.b) 後続データのサイズデータの具体的な種類
0=ADPCM(15kHz) (1~255:RESERVED)
Dummy(.w) 将来拡張用
Data... データ列
Size(.l)=0の場合は0(.b)を終端コードに持つ文字列が
格納される。
合計?bytes
(カテゴリやクラスの新設追加は利用希望者がその都度ZMUSIC事務局に申請する)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●リターン(GOSUB命令の次のアドレスへ帰還)
$f9(.b) ZMD
合計1byte
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●ダミーZMD
$fa(.b) ZMD
合計1byte
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●同期待ち(MML W,[SYNCHRONIZE])
$fb(.b) ZMD
合計1byte
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●FINE(MML [FINE])
$fc(.b) ZMD
合計1byte
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●強制キーオフ(MML `,[ALL_SOUND_OFF])
$fd(.b) ZMD
合計1byte
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●小節線(MML [----])
$fe(.b) ZMD
合計1byte
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
●演奏データ終端
$ff(.b) ZMD
合計1byte
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
12.8. ZPDフォーマット
ZPDは
$1a,'ZmaDPcM'
のヘッダIDを先頭に以下のようなヘッダ構成を取る。
各ヘッダ項目は各情報/データ領域までのオフセットを格納するもの(zpd_offset,
zpd_loop_startなど)と項目データそのものを格納するもの(zpd_note,zpd_typeなど)
の2タイプに分けられる。
1つも(AD)PCMを含んでいない「空」のZPDであっても以下に示したヘッダブロ
ックは必ず存在する。
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
zpd_header: ds.b 8 *$1a,'ZmaDPcM'
dc.l 0 *Reserved
ds.l 1 *登録ノート数(0は無しを表す)
zpd_note: ds.w 1 *登録番号
*Tone:0-32767
*Timbre:$8000+(0-32767)
zpd_type: ds.b 1 *登録タイプ(-1:ADPCM 1:16bitPCM
* 2:8bitPCM 0:No Data)
zpd_orig_key: ds.b 1 *オリジナルキーのノート番号:0-127
zpd_attribute: ds.b 1 *属性(d0=0:Normal,1:ポインタコピー)
ds.b 1 *Reserved
zpd_offset: ds.l 1 *オフセットアドレス値
zpd_size: ds.l 1 *データ物理サイズ
zpd_loop_start: ds.l 1 *ループ開始ポイント
zpd_loop_end: ds.l 1 *ループ終了ポイント
zpd_loop_time: ds.l 1 *ループ回数:0=∞,1~4294967295
ds.l 1 *Reserved
ds.l 1 *Reserved
zpd_tone_name: ds.b 32 *トーンネーム(最大32文字)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
・zpd_offset~zpd_loop_endは16bitPCM登録ケースは必ず偶数値となる。
・zpd_loop_start~zpd_loop_endはデータからの物理オフセットアドレス値を取る。